1. Field of the Invention
The present invention relates generally to networks of digital computers and, more particularly, to proxy file caches that are used in networks of digital computers.
2. Description of the Prior Art
FIG. 1 illustrates a network of digital computers in accordance with the prior art referred to by the general reference character 20. The network of digital computers 20 includes several file servers 22a-22f. During operation of the network of digital computers 20, the file servers 22a-22f deliver file data to client workstations 34 using Server Message Block ("SMB"), Network File System ("NFS.RTM."), Hyper-Text Transfer Protocol ("HTTP"), Netware Core Protocol ("NCP"), or other network-file-services protocol. The file servers 22a, 22b and 22f are networked directly to a network-backbone switch 24. The network-backbone switch 24 is also networked directly to network routers 26a-26c, and to a backbone client workstation 28. Two of the network routers 26a and 26b connect through network hubs 32a-32b respectively to the servers 22c and 22d, and to clusters of client workstations 34. One of the network routers 26c is networked directly to the server 22e, and to a cluster of client workstations 34 without an intervening network hub.
While the sub-networks respectively centered at the network-backbone switch 24 and at the network routers 26a and 26b appear topologically different from the sub-network originating at the network router 26c, as is well known to those skilled in the art the two network topologies are functionally equivalent. In principle, the network of digital computers 20 permits any of the client workstations 34 and the backbone client workstation 28 to exchange file data and or messages with each other, and with any of the file servers 22a-22f. More specific to the present invention, the network of digital computers 20 permits any of the client workstations 34 and the backbone client workstation 28 to exchange file data with any of the file servers 22a-22f.
In the illustration of FIG. 1, the various arrowed lines interconnecting the file servers 22a-22f, the network-backbone switch 24, the network routers 26a-26c, the backbone client workstation 28, the network hubs 32a-32b, and the client workstations 34 indicate bidirectional digital communication paths. As is well known to those skilled in the art, such communication paths may be provided by local area networks, virtually any form of telephone communications including analog or digital circuits and leased or dial-up lines, satellite communications, or the Internet. Moreover, the network of digital computers 20 illustrated in FIG. 1 could reside entirely within a single building, or could be worldwide.
In transferring files over the network of digital computers 20 illustrated in FIG. 1, each of the file servers 22a-22f, the network-backbone switch 24, the network routers 26a-26c, the backbone client workstation 28, the network hubs 32a-32b, and the client workstations 34 employs a network-file-services protocol. All digital computer industry standard network-file-services protocols, e.g. SMB, NFS, HTTP, or NCP, employ client side file caches to improve file access performance. FIG. 2 illustrates processing flow when a Redirector, such as that included in Microsoft.RTM. Windows NT, or NFS Client Code, such as that included in Solaris and most other Unix variants, receives a read request from a Client Process 42. The following descriptions of read and write request processing by a client workstation 34 for a network-file-services protocol assume no error occurs, and no concurrent write sharing ("CWS") of a file. CWS occurs for a file when multiple client workstations 34 concurrently access the file and at least one of the client workstations 34 is writing data to the file.
File request processing by the Redirector or NFS Client Code for the read request from the Client Process 42 proceeds as follows:
1. A Client Service Module 44, that provides a File Service Application Program Interface ("API"), receives the read request, and extracts the read request's parameters (file id, offset, count). PA1 2. A Cache Module 46 then searches a client side file cache (not depicted in any of the FIGs.) that is located at the client workstation 34. PA1 3. A Client File-Service-Protocol Module 48 then generates a SMB (or NFS, HTTP, NCP, . . . as appropriate) protocol read request specifying the missing data. PA1 4. A Communication Protocol Module 52 then encapsulates the newly generated read request in a Transmission Control Protocol ("TCP") (or User Datagram Protocol ("UDP"), or Internet Packet Exchange ("IPX"), . . . as appropriate) message that is forwarded, using Internet Protocol ("IP"), via a transport layer to one of the file servers 22a-22f that stores the file. PA1 5. Some interval of time later, the Communication Protocol Module 52 receives a TCP (or UDP, or IPX, . . . as appropriate) response message from one of the file servers 22a-22f, and de-encapsulates the SMB (or NFS, HTTP, NCP, . . . as appropriate) protocol response from the response message. PA1 6. The Client File-Service-Protocol Module 48 then receives the SMB (or NFS, HTTP, NCP, . . . as appropriate) response, and extracts the missing file data. PA1 7. Then, the Cache Module 46 copies the missing file data from the response message into the client side file cache. Now all file data requested by the Client Process 42 is present within the client side file cache. PA1 8. The Cache Module 46 then returns the requested data to the Client Service Module 44. PA1 9. The Client Service Module 44 returns the data to the Client Process 42. PA1 1. The Client Service Module 44 receives the write request, and extracts the write request's parameters (file id, offset, count). PA1 2. The Cache Module 46 then copies the data into the cache. PA1 3. The Client File-Service-Protocol Module 48 then generates a SMB (or NFS, HTTP, NCP, . . . as appropriate) protocol write request for the new file data. PA1 4. The Communication Protocol Module 52 then encapsulates the newly generated write request in a TCP (or UDP, or IPX, . . . as appropriate) message that is forwarded, using IP, via a transport layer to one of the file servers 22a-22f that stores the original file. PA1 6. Some interval of time later, the Communication Protocol Module 52 receives a TCP (or UDP, or IPX, . . . as appropriate) response message from one of the file servers 22a-22f, and de-encapsulates the SMB (or NFS, HTTP, NCP, . . . as appropriate) protocol response from the response message. PA1 7. The Client File-Service-Protocol Module 48 then checks status information included in the SMB response. If the write request failed, the Client File-Service-Protocol Module 48 re-submits the write request to that one of the file servers 22a-22f which stores the original file. PA1 8. When the Client File-Service-Protocol Module 48 receives status information indicating that the new file data has been stored at one of the file servers 22a-22f, the Client File-Service-Protocol Module 48 returns Status (OK) to the Client Service Module 44. PA1 9. The Client Service Module 44 then returns Status (OK) to the Client Process 42. PA1 1. Caching Network Routers; PA1 2. Caching Network Hubs; PA1 3. Network Capacitors; and PA1 4. Protocol-Bridging caches.
a) If all data specified in the read request is present within the client side file cache, the data is immediately returned to the Client Service Module 44, which returns the data to the Client Process 42. PA2 b) If all data specified in the read request is not present within the client side file cache, the Cache Module 46 identifies the missing data. This missing data must be fetched from one of the file servers 22a-22f that stores the file. PA2 a) If the cache is operating in a "asynchronous write mode," the Cache Module 46 then immediately returns control to the Client Service Module 44, which in turn returns control to the Client Process 42). PA2 b) If the cache is operating in "synchronous write mode," the Cache Module 46 must successfully transmit the new file data to one of the file servers 22a-22f before returning control to the Client Service Module 44.
FIG. 3 illustrates processing flow when the Redirector or NFS Client Code receives a write request from a Client Process 42. The Redirector or NFS Client Code processes the write request from a Client Process 42 as follows:
Details of various implementations of network-file-services protocols may differ somewhat from the preceding descriptions. For example, the cache may be structured as a "look-aside" cache instead of as a "flow-through" cache as depicted in FIGS. 2 and 3. While file read and write request processing by client workstations 34 when communicating via the Internet using the network-file-services protocol HTTP generally employ the Client Service Module 44, the Cache Module 46 and the Client File-Service-Protocol Module 48 depicted in FIGS. 2 and 3; Internet Web Browsers, which constitute client processes running on client workstations 34, themselves include and provide the Client Service Module 44, Cache Module 46 and Client File-Service-Protocol Module 48. Nevertheless, a distinctive characteristic of various contemporary network-file-services protocols is that they all locate their respective cache's before the Client File-Service-Protocol Module 48. Thus, the network-file-services communications, i.e. SMB, NFS, HTTP, or NCP, . . . as appropriate, messages flow directly between the Client File-Service-Protocol Module 48 and one of the file servers 22a-22f.
FIG. 4 illustrates location of the Cache Module 46 within the client workstation 34 relative to a Client SMB-Protocol Module 48', as well as relative to other caches included in the file servers 22a-22f. For easier understanding, FIG. 4 exclusively employs the SMB network-file-services protocol and TCP/IP network protocol for remote file access between the client workstation 34 and one of the file servers 22a-22f via a network connection 58. Those skilled in the art will recognize other network-file-services protocols such as NFS, HTTP, or NCP, . . . , as well as other network communication protocols such as UDP, or IPX, . . . as being functionally equivalent to those depicted in the illustration of FIG. 4. Similarly those skilled in the art will recognize that the network connection 58 might interconnect the client workstation 34 and the file server 22 located immediately adjacent to each other, or might interconnect the client workstation 34 and the file server 22 located half-way around the world from each other.
As illustrated in FIG. 4, the file server 22 includes a TCP/IP Protocol Module 62 and Server SMB-Protocol Module 64 that perform functions which correspond to those performed by analogous modules in the client workstation 34. The file server 22 includes a File System Cache Module 66 which operates similar to the Cache Module 46 in the client workstation 34. The file server 22 also includes a NT File System Module 68, a Disk Level Cache Module 72, and a Hard Disk 74 where the file is actually stored. Network-file-services-protocol requests generated by the client workstation 34 flow between the client workstation 34 and the file server 22 via the network connection 58 to be serviced in the file server 22. As depicted in FIG. 4, none of the contemporary network-file-services protocols locate their caches, i.e. the Cache Module 46, the File System Cache Module 66 or the Disk Level Cache Module 72, between the Client SMB-Protocol Module 48' in the client workstation 34 and the Server SMB-Protocol Module 64 in one of the file servers 22a-22f, i.e. within a Network File Services Path between the Client SMB-Protocol Module 48' in the client workstation 34 and the Server SMB-Protocol Module 64 in the file server 22. Thus as indicated in the illustration of FIG. 4, contemporary network-file-services protocols do not locate their respective caches in the Network File Services Path which includes a TCP/IP Protocol Module 52', network connection 58, and TCP/IP Protocol Module 62.
For various reasons related to the number of requests and responses being exchanged between client workstations 34 and file servers 22 over the network connection 58, the type(s) of communication link(s) included in the network connection 58, and the relative locations of the client workstations 34 and file servers 22, both physically and topologically with respect to the network, client workstations 34 can, and do, experience poor response to network-file-services-protocol requests. Moreover, inefficient utilization of network resources can and do occur due to network usage. For example, if first one then another of two client workstations 34 located immediately adjacent to each other access the same file at a remote file server 22, then the file requests and their responses both traverse the network even though the file data accessed by the later requesting client workstation 34 is literally only a short distance away. Such multiple accesses to a large file can significantly degrade network performance.